﻿#ifndef DATATOIMAGETHREAD_H
#define DATATOIMAGETHREAD_H
/*
 * 根据获取到的图片字节数据拼接成一张图片(因为此过程可能比较耗时所以单独线程执行该任务) 并由其他线程通过调用setRead方法唤醒该线程进行处理
 */
#include <qthread.h>
#include <QMutex>
#include <QWaitCondition>
#include <QImage>
#include <QDebug>

#define BufferDataType		uint8_t			// 表示缓冲区数据的类型

#define ImageDefaultHeight	1080			// 表示图片默认高度
#define ImageDefaultWidth   1920			// 表示图片默认宽度
#define ImageDefaultPixel   3				// 表示图片默认采用rgb888(此时一个像素点占3字节)


class DataToImageThread : public QThread
{
public:
    DataToImageThread();
    /**
     @interpret   被唤醒并执行数据转换图片处理
     @param       无
     @return      无
     */
    void run() override;
    /**
     @interpret   唤醒当前线程进行图像拼接处理
     @param       tmpPbuffer: 需要组成图片数据句柄，
     @return      无
     */
    void setRead(BufferDataType* tmpPbuffer);
    static QImage m_image;
    static bool   m_IsRead;
    static QMutex m_Mutex;
private:
    QMutex m_mutex;
    QWaitCondition m_Wait;          // 条件变量
    BufferDataType* m_tmpPbuffer;   // 图片数据句柄
    size_t m_Height;                // 图片像素高
    size_t m_Width;                 // 图片像素宽
    size_t m_Pixel;                 // 图片像素点占字节数
};
#endif // DATATOIMAGETHREAD_H
